<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class Recruitment extends CI_Controller {

    private $_data;

    function __construct() {
        parent::__construct();
        $this->load->model(array('recruitmentmodel', 'recruitment_comment_model', 'ratemodel', 'eventmodel', 'usermodel'));

        if ($this->router->method != 'index' AND $this->router->method != 'view') {
            if (!isset($_SESSION['userLoggedIn'])) {
                redirect();
            }
        }
    }

    public function test() {
        echo '<pre>';
        var_dump($_POST);
        die;
    }

    /**
     * Action index
     * Hiển thị danh sách tất cả
     */
    public function index($page = 0, $isAjax = FALSE, $career = NULL, $filter = NULL) {
        $this->load->helper('frontend_helper');
        $this->load->helper('user_helper');
        if ($career && $career != 'null') {
            $data['recruitments'] = $this->recruitmentmodel->getRecruitmentsByCareer(16, $page * 16, $career);
        } else {
            $data['recruitments'] = $this->recruitmentmodel->getRecruitments(16, $page * 16);
        }
        if($filter != 'null') {
            $data['filter'] = $filter;
            if($filter == 'rate') {
                $data['recruitments'] = $this->recruitmentmodel->getHighestRateRecruitments(8, $page * 8);
            } else if($filter == 'recruitment') {
                $data['recruitments'] = $this->recruitmentmodel->getNewestRecruitments(8, $page * 8);
            }
        }
        if(isset($data['recruitments']) && $data['recruitments'] != "") {
            for($i = 0; $i < count($data['recruitments']); $i++) {
                //Get event mới nhất của recruitment (nếu có)
                $data['recruitments'][$i]['event'] = $this->eventmodel->getNewestEventByCidAndType($data['recruitments'][$i]['recruitment_id'], 1);
                //Count comment của recruitment
                $count_comment = $this->recruitment_comment_model->getCountCommentByRecruitmentId($data['recruitments'][$i]['recruitment_id']);
                if($count_comment['count'] < 10) {
                    $count_comment['count'] = '0' . $count_comment['count'];
                }
                $data['recruitments'][$i]['count_comment'] = $count_comment['count'];
            }
        }
        if ($page) {
            $data['extra'] = true;
        }
        if(isset($_SESSION['userLoggedIn'])) {
             $data['user'] = $this->usermodel->getUserByid((int) $_SESSION['userLoggedIn']['id']);
        }
        if ($isAjax) {
            $this->load->view('recruitment/index', $data);
        } else {
            $this->_data['content'] = $this->load->view('recruitment/index', $data, true);
            $this->load->view('layout/frontend/index', $this->_data);
        }
    }

    /**
     * Action view
     * Xem chi tiết thông tin
     */
    public function view($id, $isAjax = FALSE) {
        $this->load->helper('frontend');
        $this->load->helper('user_helper');
        $this->recruitmentmodel->updateViewed($id);

        // Kiểm tra xem người dùng đã đăng nhập hay chưa
        if (!isset($_SESSION['userLoggedIn'])) {
            $data['not_login'] = 1;
        }

        if ($isAjax) {
            $data['recruitment'] = $this->recruitmentmodel->getRecruitmentById($id);
            if (isset($data['recruitment']['recruitment_id']) && $data['recruitment']['recruitment_id'] != "") {
                $rated_id = $data['recruitment']['recruitment_id'];
                // Kiểm tra xem người dùng đã rate cho hồ sơ này chưa
                if (isset($_SESSION['userLoggedIn'])) {
                    $data['rate'] = $this->ratemodel->getRateByUserIdAndRatedIdAndType((int) $_SESSION['userLoggedIn']['id'], $rated_id, 2);
                    if (isset($data['rate']['id']) && $data['rate']['id'] != "") {
                        $data['rated'] = 1;
                    }
                }
                // Lấy danh sách các comment
                $data['comment'] = $this->recruitment_comment_model->getCommentByRecruitmentId($data['recruitment']['recruitment_id'], 0, 10);
                if (count($data['comment']) == 0) {
                    $data['check_comment'] = 0;
                }
            }
            $this->load->view('recruitment/view', $data);
        } else {
            $data = array('id' => $id);
            $this->_data['content'] = $this->load->view('recruitment/search', $data, true);
            $this->load->view('layout/frontend/index', $this->_data);
        }
    }

    public function add() {
        $this->load->helper('frontend');
        $this->load->library(array('form_validation'));
        $this->load->model('usermodel');

        $data['user'] = $this->usermodel->getUserById((int) $_SESSION['userLoggedIn']['id']);
        $data['recruitment'] = $this->recruitmentmodel->getRecruitmentByUserId((int) $_SESSION['userLoggedIn']['id']);
        if ($data['recruitment']) { // edit
            $recruitmentId = $data['recruitment']['recruitment_id'];
        } else { // Khởi tạo các giá trị ban đầu khi add
            $data['recruitment'] = array(
                'recruitment_id' => '',
                // Trình độ học vấn
                'education' => '', // Trình độ học vấn
                'discipline' => '', // Ngành học
                'graduation_year' => '', // Tốt nghiệp năm
                'degree' => '', // Loại tốt nghiệp
                'school' => '', // Tốt nghiệp tại trường
                'languages' => '', // Trình độ ngoại ngữ
                'languages_degree' => '', // Loại tốt nghiệp
                'certificate' => '', // Các bằng cấp khác
                // Kinh nghiệm làm việc
                'years_of_experience' => '', // Số năm kinh nghiệm
                'experience' => '', // Kinh nghiệm
                'skills' => '', // Các kỹ năng
                // Công việc mong muốn
                'position' => '', // Vị trí mong muốn
                'level' => '', // Cấp bậc mong muốn
                'career' => '', // Ngành nghề
                'method' => '', // Hình thức làm việc
                'work_place' => '', // Địa điểm làm việc
                'salary' => '', // Mức lương mong muốn
                'objective' => '', // Mục tiêu nghề nghiệp
                // Thông tin liên hệ
                'contact_name' => '', // Họ và tên
                'contact_email' => '', // Email
                'contact_tel' => '', // Điện thoại
                'married' => '', // Điện thoại
            );
        }

        if (isset($_POST['education-submit'])) {
            unset($_POST['education-submit']);
            $this->form_validation->set_rules('education', 'Trình độ học vấn', 'trim|xss_clean');
            $this->form_validation->set_rules('discipline', 'Ngành học', 'trim|xss_clean');
            $this->form_validation->set_rules('graduation_year', 'Tốt nghiệp năm', 'trim|xss_clean');
            $this->form_validation->set_rules('degree', 'Loại tốt nghiệp', 'trim|xss_clean');
            $this->form_validation->set_rules('school', 'Tốt nghiệp tại trường', 'trim|xss_clean');
            $this->form_validation->set_rules('languages', 'Trình độ ngoại ngữ', 'trim|xss_clean');
            $this->form_validation->set_rules('languages_degree', 'Loại tốt nghiệp', 'trim|xss_clean');
            $this->form_validation->set_rules('certificate', 'Các bằng cấp khác', 'trim|xss_clean');
        } elseif (isset($_POST['experience-submit'])) {
            unset($_POST['experience-submit']);
            $this->form_validation->set_rules('years_of_experience', 'Số năm kinh nghiệm', 'trim|xss_clean');
            $this->form_validation->set_rules('experience', 'Kinh nghiệm', 'trim|xss_clean');
            $this->form_validation->set_rules('skills', 'Các kỹ năng', 'trim|xss_clean');
        } elseif (isset($_POST['expect-submit'])) {
            unset($_POST['expect-submit']);
            $this->form_validation->set_rules('position', 'Vị trí mong muốn', 'trim|xss_clean');
            $this->form_validation->set_rules('level', 'Cấp bậc mong muốn', 'trim|xss_clean');
            $this->form_validation->set_rules('career', 'Ngành nghề', 'trim|xss_clean');
            $this->form_validation->set_rules('method', 'Hình thức làm việc', 'trim|xss_clean');
            $this->form_validation->set_rules('work_place', 'Địa điểm làm việc', 'trim|xss_clean');
            $this->form_validation->set_rules('salary', 'Mức lương mong muốn', 'trim|xss_clean');
            $this->form_validation->set_rules('objective', 'Mục tiêu nghề nghiệp', 'trim|xss_clean');
        } elseif (isset($_POST['contact-submit'])) {
            unset($_POST['contact-submit']);
            $this->form_validation->set_rules('contact_name', 'Họ và tên', 'trim|xss_clean');
            $this->form_validation->set_rules('contact_email', 'Email', 'trim|xss_clean');
            $this->form_validation->set_rules('contact_tel', 'Điện thoại', 'trim|xss_clean');
        }

        if ($this->form_validation->run() == FALSE) { // not validate form 
            $this->_data['content'] = $this->load->view('recruitment/add', $data, true);
            $this->load->view('layout/frontend/index', $this->_data);
            return FALSE;
        } else {
            $_POST['user_id'] = (int) $_SESSION['userLoggedIn']['id'];
            if (isset($recruitmentId)) {
                $this->recruitmentmodel->update($recruitmentId, $_POST);
                $this->session->set_flashdata('message', 'Đã thay đổi thành công!');
            } else {
                $this->recruitmentmodel->add($_POST);
                $this->session->set_flashdata('message', 'Đã thêm mới thành công!');
            }
            redirect('recruitment/add');
            return TRUE;
        }
    }

    /**
     * Ajax Action
     * Hiển thị danh sách tất cả các Ngành nghề
     */
    public function career() {
        $this->load->view('recruitment/career');
    }

    public function place() {
        $data = array(
            array('id' => '1',
                'name' => 'An Giang'
                ),
            array('id' => '2',
                'name' => 'Bà Rịa - Vũng Tàu'
                ),
            array('id' => '3',
                'name' => 'Bình Dương'
                ),
            array('id' => '4',
                'name' => 'Bình Phước'
                ),
        );
        $json_response = json_encode($data);
        echo $json_response;   
    }
    
    public function comment($user_id = null, $recruitment_id = null, $comment = null) {
        $data['user_id'] = $user_id;
        $data['recruitment_id'] = $recruitment_id;
        $data['comment'] = $comment;
        $this->recruitment_comment_model->add($data);
    }
}